package com.songlanyun.modules.marketing.seckill.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.songlanyun.common.drive.ValueObject;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.NumberFormat;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 秒杀活动表
 *
 * @author Mark
 * @email sunlightcs@gmail.com
 * @date 2020-11-23 17:30:11
 */
@Data
public class SeckillActivityDTO implements ValueObject {

    /**
     *
     */
    private Long id;
    /**
     * 所属商家
     */
    private Long shopId;
    /**
     * 活动名称
     */
    @NotBlank(message = "活动名称不能为空")
    @Length(min = 1, max = 15, message = "活动名称在1-15个字")
    private String name;
    /**
     * 活动开始时间（小时）
     */
    @NotBlank(message = "活动开始时间（小时）不能为空")
    private String startHour;
    /**
     * 活动结束时间（小时）
     */
    @NotBlank(message = "活动结束时间（小时）不能为空")
    private String endHour;

    /**
     * 活动开始时间
     */
    @NotNull(message = "活动开始时间不能为空")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date startTime;
    /**
     * 活动结束时间
     */
    @NotNull(message = "活动结束时间不能为空")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date endTime;
    /**
     * 订单自动关闭时间（商品按下单减库存，请设置未付款订单自动取消时间及时释放库存，可输入3-360分钟）
     * 分钟
     */
    @Min(value = 3, message = " 订单自动关闭时间最小3分钟")
    @Max(value = 360, message = " 订单自动关闭时间最大360分钟")
    private Integer closeTime;
    /**
     * 活动图片
     */
    @NotBlank(message = "活动图片不能为空")
    private String imgUrl;
    /**
     * 活动说明
     */
//    @NotBlank(message = "活动说明不能为空")
    @Length(max = 200, message = "活动说明长度在200个字以内")
    private String explain;

    /**
     * 周期方式
     * 0：每天
     * 1：每周
     */
    @NotNull(message = "周期方式不能为空")
    private Integer cycleMode;
    /**
     * 周几
     * 0：周日
     * 1：周一
     * 2：周二
     * 3：周三
     * 4：周四
     * 5：周五
     * 6：周六
     */
    private List<Integer> weekList;

}
